 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using RESTScrum.Dominio;
using System.Data.SqlClient;

namespace RESTScrum.Persistencia
{
    public class TipoRecursoDAO
    {
        public TipoRecurso Crear(TipoRecurso TipoRecursoACrear)
        {
            TipoRecurso TipoRecursoCreado = null;
            string sql = "INSERT INTO TipoRecurso values (@cod, @nom, @est)";
            using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@cod", TipoRecursoACrear.Codigo));
                    com.Parameters.Add(new SqlParameter("@nom", TipoRecursoACrear.Nombre));
                    com.Parameters.Add(new SqlParameter("@est", TipoRecursoACrear.Estado));
                    com.ExecuteNonQuery();
                }
            }
            TipoRecursoCreado = Obtener(TipoRecursoACrear.Codigo);
            return TipoRecursoCreado;
        }

        public TipoRecurso Obtener(string codigo)
        {
    
            TipoRecurso TipoRecursoEncontrado = null;
            string sql = "SELECT * FROM TipoRecurso WHERE codigo=@cod";
            using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@cod", codigo));
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        if (resultado.Read())
                        {
                            TipoRecursoEncontrado = new TipoRecurso()
                            {
                                Codigo = resultado["Codigo"].ToString(),
                                Nombre = (string)resultado["Nombre"],
                                Estado = (string)resultado["Estado"]
                            };
                        }
                    }
                }

            }
            return TipoRecursoEncontrado;
        }

        public TipoRecurso Modificar(TipoRecurso TipoRecursoAModificar)
        {
            TipoRecurso TipoRecursoModificado = null;
            string sql = "UPDATE TipoRecurso SET nombre=@nom WHERE codigo=@cod";
            using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@cod", TipoRecursoAModificar.Codigo));
                    com.Parameters.Add(new SqlParameter("@nom", TipoRecursoAModificar.Nombre));
                    com.ExecuteNonQuery();
                }
            }
            TipoRecursoModificado = Obtener(TipoRecursoAModificar.Codigo);
            return TipoRecursoModificado;
        }

        public void Eliminar(string codigo)
        {
            string sql = "delete TipoRecurso where codigo=@cod";
            using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@cod", codigo));
                    com.ExecuteNonQuery();
                }
            }
            
        }

        public List<TipoRecurso> ListarTodos()
        {
            TipoRecurso TipoRecursoEncontrado = null;
            List<TipoRecurso> lista = new List<TipoRecurso>();
            string sql = "select * from TipoRecurso";
            using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        while (resultado.Read())
                        {
                            TipoRecursoEncontrado = new TipoRecurso()
                            {
                                Codigo = resultado["Codigo"].ToString(),
                                Nombre = (string)resultado["Nombre"],
                                Estado = (string)resultado["Estado"]
                            };

                            lista.Add(TipoRecursoEncontrado);

                        }
                    }
                }
            }
            return lista;
        }

    }
}